package com.ant.business.system.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.ant.common.base.BaseDomain;

import java.util.List;

/**
 * 模块管理
 *
 * @author LB
 * @description LB
 * @create 2021-03-22 14:25:56
 **/
@EqualsAndHashCode(callSuper = true)
@TableName(value = "tb_module")
@Data
@ApiModel(value = "模块管理")
public class Module extends BaseDomain {

    /**
     * 模块编号
     */
    @TableId(value = "id", type = IdType.NONE)
    @ApiModelProperty("模块编号")
    private Integer id;

    /**
     * 模块英文名称
     */
    @TableField(value = "title")
    @ApiModelProperty("模块英文名称")
    private String title;

    /**
     * 模块名称
     */
    @TableField(value = "name")
    @ApiModelProperty("模块名称")
    private String name;

    /**
     * 图标
     */
    @TableField(value = "icon")
    @ApiModelProperty("图标")
    private String icon;

    /**
     * 模块分组路径
     */
    @TableField(value = "module_group_path")
    @ApiModelProperty("模块分组路径")
    private String moduleGroupPath;

    /**
     * 模块分组名称
     */
    @TableField(value = "module_group_name")
    @ApiModelProperty("模块分组名称")
    private String moduleGroupName;

    /**
     * 父模块编号
     */
    @TableField(value = "parent_id")
    @ApiModelProperty("父模块编号")
    private Integer parentId;

    /**
     * 父模块名称
     */
    @TableField(exist = false)
    @ApiModelProperty("父模块名称")
    private String parentName;

    /**
     * 模块类型（saas-1，unit-2）
     */
    @TableField(value = "type")
    @ApiModelProperty("模块类型")
    private Integer type;

    /**
     * 层级
     */
    @TableField(value = "level")
    @ApiModelProperty("层级")
    private Integer level;

    /**
     * 访问地址
     */
    @TableField(value = "path")
    @ApiModelProperty("访问地址")
    private String path;

    /**
     * 是否是报表
     */
    @TableField(value = "is_report")
    @ApiModelProperty("是否是报表")
    private Integer isReport;

    /**
     * 删除标志
     */
    @TableField(value = "delete_flag")
    @ApiModelProperty("删除标志")
    private Integer deleteFlag;

    /**
     * 是否是按钮
     */
    @TableField(value = "is_button")
    @ApiModelProperty("是否是按钮")
    private Integer isButton;

    /**
     * 树节点编号
     */
    @TableField(value = "tree_code")
    @ApiModelProperty("树节点编号")
    private String treeCode;

    /**
     * 排序
     */
    @TableField(value = "order_by")
    @ApiModelProperty("排序")
    private Integer orderBy;

    @TableField(exist = false)
    private Meta meta;

    @TableField(exist = false)
    private List<Module> children;

    @Data
    public static class Meta {
        private String title;
        private String icon;
        private Boolean affix;
    }
}